定期ミートアップ 第57回
Shiikaに並列機構(スタックフルコルーチン)を入れたい
PenはCPS変換してTokioと組み合わせているらしい
まずは小さいもので試す
chiika-1
LLVM IRの薄いラッパーみたいなもの
chiika_runtime
Rust製
Tokio(Rust用の非同期ランタイム)のスケジューラ
sleep_sec命令
ABI
chiika側にエクスポートする非同期関数は、env、cont、引数…をとり、std::task::Futureを返すものとする
envはchiika側の都合なのでRustからは触らない
処理が終わったらcontを呼ぶ
contはenv、結果をとる関数
chiika-2
chiika-1にコンパイルされる言語
言語上は関数に同期・非同期の区別がない
コンパイル時に自動で判別される
Rust側の非同期関数を呼び出す部分を境界としCPS変換する
Todo
引数をあとで使う場合に対応する
クロージャ(高階関数)を実装
tokio::spawn
Enumerator?
ループに対応する